/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.bl;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dsw2.biblioteca.Dao.DetallePrestamoDaoLocal;
import mx.its.dsw2.biblioteca.Dao.PrestamoDaoLocal;
import mx.its.dsw2.biblioteca.enumeracion.EstadoDetallePrestamo;
import mx.its.dsw2.biblioteca.enumeracion.EstadoTransaccion;
import mx.its.dsw2.biblioteca.modelo.DetallePrestamo;
import mx.its.dsw2.biblioteca.modelo.Libro;
import mx.its.dsw2.biblioteca.modelo.Prestamo;

/**
 *
 * @author Pepe
 */
@Stateless
public class PrestamoBl implements PrestamoBlLocal {
    @EJB
    private DetallePrestamoDaoLocal detallePrestamoDao;
   // @PersistenceContext(unitName = "Biblioteca8e-ejbPU")
    //private EntityManager em;
    @EJB
    private PrestamoDaoLocal prestamoDao;

    @Override
    public EstadoTransaccion Register(Prestamo lend, List<Libro> book) {
        int available =3;
        List<Prestamo> incompleteLends=prestamoDao.findByIncoplete(lend.getIdUsuario());
        for (Prestamo p : incompleteLends) {
            available=available-detallePrestamoDao.findByLends(p).size();
            
        }
        if(available<=0||book.size()>available){
            return EstadoTransaccion.INCOMPLETO;
        }else{
            
        }
            //agregar fecha y hora
             //lend.setFecha(new Date());
             //lend.setHora(new Time(new Date().getTime()));
     
            prestamoDao.create(lend);
            for(Libro b:book){
                DetallePrestamo dp=new DetallePrestamo();
                dp.setIdLibro(b);
                dp.setIdPrestamo(lend);
                dp.setEstado(EstadoDetallePrestamo.PRESTADO.ordinal());
                detallePrestamoDao.create(dp);
            }
             return EstadoTransaccion.COMPLETO;
        }

    @Override
    public EstadoTransaccion takeBack(List<Libro> books) {
        for(Libro book:books){
           DetallePrestamo dp=detallePrestamoDao.findBooks(book);
           if(dp==null){
               return EstadoTransaccion.INCOMPLETO;
           }else{
               dp.setEstado(EstadoDetallePrestamo.REGRESADO.ordinal());
                       detallePrestamoDao.edit(dp);
           }
        }
        return null;
    }
       
        
    }
